# 代码编写者： 李朔
# 开发时间： 2021/9/9 16:23
#快排重写
s=[1,2,3,1,2,6,4,12,85,21,3]

def Quick_sort(s,first,last):
    '''
    :param s: 待排序的序列
    :param first: 排序的索引开始位置
    :param last: 排序的索引的结束位置
    :return:
    '''
    if first+1>=last:
        return None
    #开始位置索引和结束位置的索引
    l_pointer,r_pointer=first,last-1
    key=s[l_pointer]  #本轮排序中的枢纽值

    while l_pointer<r_pointer:
        while l_pointer<r_pointer and s[r_pointer]>=key:
            r_pointer-=1
        s[l_pointer]=s[r_pointer]
        while l_pointer<r_pointer and s[l_pointer]<=key:
            l_pointer+=1
        s[r_pointer]=s[l_pointer]
    #枢纽值所在位置
    s[l_pointer]=key
    #递归
    Quick_sort(s,first,l_pointer)
    Quick_sort(s,l_pointer+1,last)

Quick_sort(s,0,len(s))
print(s)